﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.SqlClient;

public partial class PhienChotDau : System.Web.UI.Page
{
    SqlParameter[] p;
    clsXuLy ex = new clsXuLy();
    string frmName = "frmPhienChotDau";
    static int f_SuDung = 0, f_Them = 0, f_Sua = 0, f_Xoa = 0, f_XemTatCa = 0, f_InBaoCao = 0;
    public string Header = System.Configuration.ConfigurationSettings.AppSettings["Header"].ToString();
    static DataTable dt;
    static int PageNumber = 10;
    static int CurrentPage = 1;

    protected void Page_Load(object sender, EventArgs e)
    {
        if (string.IsNullOrEmpty(Convert.ToString(Session["user"])))
            gstGetMess("Hết phiên làm việc, vui lòng đăng nhập để tiếp tục", "Default.aspx");
        else
        {
            if (!IsPostBack)
            {

                string idnguoidung = Session["IDUser"].ToString();
                string sql = "select SuDung,Them,Sua,Xoa,InBaoCao,XemTatCa from XDAPhanQuyen where IDnguoidung='" + idnguoidung + "' and tag='" + frmName + "'";

                DataTable dt2 = ex.GetData_Text(sql);
                if (dt2.Rows.Count > 0)
                {
                    f_SuDung = int.Parse(dt2.Rows[0]["SuDung"].ToString());
                    f_Them = int.Parse(dt2.Rows[0]["Them"].ToString());
                    f_Sua = int.Parse(dt2.Rows[0]["Sua"].ToString());
                    f_Xoa = int.Parse(dt2.Rows[0]["Xoa"].ToString());
                    f_InBaoCao = int.Parse(dt2.Rows[0]["InBaoCao"].ToString());
                    f_XemTatCa = int.Parse(dt2.Rows[0]["XemTatCa"].ToString());
                }
                if (f_SuDung.Equals(1))
                {
                    Title = "Quản lý phiên chốt dầu | " + Header;

                    btnCancel_Click(sender, e);
                    txtTuNgay.Visible = true;
                    txtDenNgay.Visible = true;
                    
                    dlNam.Visible = false;
                    int year1 = DateTime.Now.Year - 3;
                    int year2 = DateTime.Now.Year;
                    for (int i = year2; i >= year1; i--)
                    {
                        dlNam.Items.Add(new ListItem("Năm " + i.ToString(), i.ToString()));
                    }
                    dlNam.SelectedValue = year2.ToString();
                    txtTuNgay.Text = DateTime.Now.ToString("dd/MM/yyyy");
                    txtDenNgay.Text = DateTime.Now.ToString("dd/MM/yyyy");
                    LoadBienSoTK();
                }
                else
                    gstGetMess("Bạn không có quyền xem trang này", "Home.aspx");

            }
        }
    }
    protected void btnSave_Click(object sender, EventArgs e)
    {
        if (f_Them.Equals(1))
        {
            try
            {
                p = new SqlParameter[6];
                p[0] = new SqlParameter("@IDs", Guid.NewGuid());
                p[0].SqlDbType = SqlDbType.UniqueIdentifier;
                p[1] = new SqlParameter("@BienSoXe", ex.GetGuid(drbiensoxe.SelectedValue));
                p[1].SqlDbType = SqlDbType.UniqueIdentifier;

                p[2] = new SqlParameter("@NgayNap", ex.GetNgayThang(txtngaynap.Text.Trim()));
                p[2].SqlDbType = SqlDbType.SmallDateTime;
                p[3] = new SqlParameter("@SoNhienLieu", txtsonhienlieu.Text.Trim());
                p[3].SqlDbType = SqlDbType.Float;
                p[4] = new SqlParameter("@SoKm", txtsokm.Text.Trim());
                p[4].SqlDbType = SqlDbType.Float;
                p[5] = new SqlParameter("@Del", 1);
                p[5].SqlDbType = SqlDbType.Int;
                ex.ExecuteNonQuerry("sp_xdaphienchotdau_Add", p);
                btnCancel_Click(sender, e);
                gstGetMess("Lưu thành công", "");
            }
            catch (Exception ax)
            {
                gstGetMess("Có lỗi trong quá trình lưu, xem trong file log", "");
                ex.WriteLog(Server.MapPath("Log.txt"), DateTime.Now.ToString() + "\tphiên chốt dầu\t" + ax.Message);
            }
        }
        else
            gstGetMess("Bạn không có quyền thêm dữ liệu trên trang này", "");
    }
    protected void btnCancel_Click(object sender, EventArgs e)
    {
        txtsokm.Text = "";
        txtngaynap.Text = DateTime.Now.ToString("dd/MM/yyyy");
        txtsonhienlieu.Text = "";

        btnFirst.Visible = true;
        btnNext.Visible = true;
        btnPre.Visible = true;

        p = new SqlParameter[2];
        p[0] = new SqlParameter("@PageNumber", 1);
        p[0].SqlDbType = SqlDbType.Int;
        p[1] = new SqlParameter("@RowspPage", PageNumber);
        p[1].SqlDbType = SqlDbType.Int;

        drbiensoxe.SelectedIndex = 0;

        GV.DataSource = ex.GetData("sp_xdaphienchotdau_List", p);
        GV.DataBind();
        btnSave.Visible = true;
        btncapnhat.Visible = false;
        
        LoadBienSo();
        drbiensoxe.Enabled = true;
        
        double  ttiencovat = 0, ttienkhongvat = 0, sonhienlieu=0;
        for (int i = 0; i < GV.Rows.Count; i++)
        {

            sonhienlieu += double.Parse(GV.Rows[i].Cells[4].Text.Replace(",", ""));
            ttiencovat += double.Parse(GV.Rows[i].Cells[10].Text.Replace(",", ""));
            ttienkhongvat += double.Parse(GV.Rows[i].Cells[11].Text.Replace(",", ""));
        }
       
        if (GV.Rows.Count > 0)
        {
            GV.FooterRow.Cells[2].Text = "Tổng số";
            GV.FooterRow.Cells[2].HorizontalAlign = HorizontalAlign.Center;
            //GV.FooterRow.Cells[4].HorizontalAlign = HorizontalAlign.Center;
            GV.FooterRow.Cells[4].Text = sonhienlieu > 999 ? string.Format("{0:0,0}", sonhienlieu) : sonhienlieu.ToString();
            GV.FooterRow.Cells[10].Text = ttiencovat > 999 ? string.Format("{0:0,0}", ttiencovat) : ttiencovat.ToString();
            GV.FooterRow.Cells[11].Text = ttienkhongvat > 999 ? string.Format("{0:0,0}", ttienkhongvat) : ttienkhongvat.ToString();

        }
    }
    private void gstGetMess(string gstMess, string gstLink)
    {
        if (gstLink == "")
            ScriptManager.RegisterClientScriptBlock(this, this.GetType(), " ", "alert('" + gstMess + "')", true);
        else
            ScriptManager.RegisterClientScriptBlock(this, this.GetType(), " ", "alert('" + gstMess + "');window.location.href='" + gstLink + "'", true);

    }
    protected void GV_RowCommand(object sender, GridViewCommandEventArgs e)
    {
        string ID = e.CommandArgument.ToString();
        hdID.Value = ID;
        Guid gID = new Guid(ID);
        p = new SqlParameter[1];
        p[0] = new SqlParameter("@IDs", gID);
        p[0].SqlDbType = SqlDbType.UniqueIdentifier;

        if (e.CommandName.Equals("Select"))
        {
            DataTable dt = ex.GetData("sp_xdaphienchotdau_ListByID", p);
            if (dt.Rows.Count > 0)
            {
                try
                {
                    LoadBienSoAll();
                    txtsonhienlieu.Text = dt.Rows[0]["SoNhienLieu"].ToString();
                    txtsokm.Text = dt.Rows[0]["SoKm"].ToString();
                    txtngaynap.Text = dt.Rows[0]["NgayNap"].ToString();
                    drbiensoxe.SelectedValue = dt.Rows[0]["BienSoXe"].ToString();
                }
                catch (Exception ax)
                {
                    gstGetMess("Có lỗi trong quá trình xem, xem trong file log", "");
                    ex.WriteLog(Server.MapPath("Log.txt"), DateTime.Now.ToString() + "\tphiên chốt dầu\t" + ax.Message);
                }
                drbiensoxe.Enabled = false;
            }
            btncapnhat.Visible = true;
            btnSave.Visible = false;
        }
        else
            if (e.CommandName.Equals("Del"))
            {
                if (f_Xoa.Equals(1))
                {
                    try
                    {
                        ex.ExecuteNonQuerry("sp_xdaphienchotdau_Del", p);
                        btnCancel_Click(sender, e);
                        gstGetMess("Xóa thành công", "");
                    }
                    catch (Exception ax)
                    {
                        gstGetMess("Có lỗi trong quá trình xóa, xem trong file log", "");
                        ex.WriteLog(Server.MapPath("Log.txt"), DateTime.Now.ToString() + "\tphiên chốt dầu\t" + ax.Message);

                    }
                }
                else
                    gstGetMess("Bạn không có quyền xóa dữ liệu trên trang này", "");
            }
    }
    protected void btncapnhat_Click(object sender, EventArgs e)
    {
        if (f_Sua.Equals(1))
        {
            try
            {
                Guid gID = new Guid(hdID.Value);
                p = new SqlParameter[6];
                p[0] = new SqlParameter("@IDs", gID);
                p[0].SqlDbType = SqlDbType.UniqueIdentifier;

                p[1] = new SqlParameter("@BienSoXe", ex.GetGuid(drbiensoxe.SelectedValue));
                p[1].SqlDbType = SqlDbType.UniqueIdentifier;

                p[2] = new SqlParameter("@NgayNap", ex.GetNgayThang(txtngaynap.Text.Trim()));
                p[2].SqlDbType = SqlDbType.SmallDateTime;
                p[3] = new SqlParameter("@SoNhienLieu", txtsonhienlieu.Text.Trim());
                p[3].SqlDbType = SqlDbType.Float;
                p[4] = new SqlParameter("@SoKm", txtsokm.Text.Trim());
                p[4].SqlDbType = SqlDbType.Float;
                p[5] = new SqlParameter("Del", 1);
                p[5].SqlDbType = SqlDbType.Float;

                ex.ExecuteNonQuerry("sp_xdaphienchotdau_Update", p);
                btnCancel_Click(sender, e);
                gstGetMess("Cập nhật thành công", "");
            }
            catch (Exception ax)
            {
                gstGetMess("Có lỗi trong quá trình cập nhật, xem trong file log", "");
                ex.WriteLog(Server.MapPath("Log.txt"), DateTime.Now.ToString() + "\tphiên chốt dầu\t" + ax.Message);
            }
        }
        else
            gstGetMess("Bạn không có quyền sửa dữ liệu trên trang này", "");
    }
    void LoadBienSo()
    {
        drbiensoxe.Items.Clear();
        drbiensoxe.DataSource = ex.GetData("sp_xdaxevanchuyen_ListDoiTuongChi");
        drbiensoxe.DataBind();
        drbiensoxe.Items.Insert(0, new ListItem("--Chọn biển số xe--", ""));
        drbiensoxe.SelectedIndex = 0;
    }
    void LoadBienSoAll()
    {
        drbiensoxe.Items.Clear();
        drbiensoxe.DataSource = ex.GetData("sp_xdaphienchotdau_ListBienSoAll");
        drbiensoxe.DataBind();
        drbiensoxe.Items.Insert(0, new ListItem("--Chọn biển số xe--", ""));
        drbiensoxe.SelectedIndex = 0;
    }
    void LoadBienSoTK()
    {
        dlLocBienSo.Items.Clear();
        dlLocBienSo.DataSource = ex.GetData("sp_xdaxevanchuyen_ListDoiTuongChi");
        dlLocBienSo.DataBind();
        dlLocBienSo.Items.Insert(0, new ListItem("--Chọn biển số xe--", ""));
        dlLocBienSo.SelectedIndex = 0;
    }
    
    protected void btnXem_Click(object sender, EventArgs e)
    {
        getDate();
        if (hdTuNgay.Value.Trim().Equals("") || hdDenNgay.Value.Trim().Equals(""))
            gstGetMess("Nhập khoảng thời gian", "");
        else
        {
            try
            {
                DateTime dt1 = DateTime.Parse(ex.GetNgayThang(hdTuNgay.Value.Trim()).ToString());
                DateTime dt2 = DateTime.Parse(ex.GetNgayThang(hdDenNgay.Value.Trim()).ToString());

                if (dlLocBienSo.SelectedIndex == 0)
                {
                    p = new SqlParameter[2];
                    p[0] = new SqlParameter("@TuNgay", dt1);
                    p[0].SqlDbType = SqlDbType.SmallDateTime;
                    p[1] = new SqlParameter("@DenNgay", dt2);
                    p[1].SqlDbType = SqlDbType.SmallDateTime;
                    GV.DataSource = ex.GetData("sp_xdaphienchotdau_List_ListByDatetime", p);
                    GV.DataBind();
                }
                else {
                    p = new SqlParameter[3];
                    p[0] = new SqlParameter("@TuNgay", dt1);
                    p[0].SqlDbType = SqlDbType.SmallDateTime;
                    p[1] = new SqlParameter("@DenNgay", dt2);
                    p[1].SqlDbType = SqlDbType.SmallDateTime;
                    p[2] = new SqlParameter("@BienSo", ex.GetGuid(dlLocBienSo.SelectedValue));
                    p[2].SqlDbType = SqlDbType.UniqueIdentifier;
                    GV.DataSource = ex.GetData("sp_xdaphienchotdau_List_ListByDatetime_Loc", p);
                    GV.DataBind();
                }
                double ttiencovat = 0, ttienkhongvat = 0,sonhienlieu=0;
                for (int i = 0; i < GV.Rows.Count; i++)
                {
                    sonhienlieu += double.Parse(GV.Rows[i].Cells[4].Text.Replace(",", ""));
                    ttiencovat += double.Parse(GV.Rows[i].Cells[10].Text.Replace(",", ""));
                    ttienkhongvat += double.Parse(GV.Rows[i].Cells[11].Text.Replace(",", ""));
                }

                if (GV.Rows.Count > 0)
                {
                    GV.FooterRow.Cells[2].Text = "Tổng số";
                    GV.FooterRow.Cells[2].HorizontalAlign = HorizontalAlign.Center;
                    //GV.FooterRow.Cells[4].HorizontalAlign = HorizontalAlign.Center;
                    GV.FooterRow.Cells[4].Text = sonhienlieu > 999 ? string.Format("{0:0,0}", sonhienlieu) : sonhienlieu.ToString();
                    GV.FooterRow.Cells[10].Text = ttiencovat > 999 ? string.Format("{0:0,0}", ttiencovat) : ttiencovat.ToString();
                    GV.FooterRow.Cells[11].Text = ttienkhongvat > 999 ? string.Format("{0:0,0}", ttienkhongvat) : ttienkhongvat.ToString();

                }
            }
            catch (Exception ax)
            {
                gstGetMess("Có lỗi trong quá trình cập nhật, xem trong file log", "");
                ex.WriteLog(Server.MapPath("Log.txt"), DateTime.Now.ToString() + "\tphiên chốt dầu\t" + ax.Message);
            }
            btnFirst.Visible = false;
            btnNext.Visible = false;
            btnPre.Visible = false;
        }
    }
    public void getDate()
    {

        if (dlThang.SelectedIndex.Equals(0))
        {
            hdTuNgay.Value = txtTuNgay.Text;
            hdDenNgay.Value = txtDenNgay.Text;
        }
        else
        {
            txtTuNgay.Text = "1/" + dlThang.SelectedValue + "/" + dlNam.SelectedValue;
            txtDenNgay.Text = GetLastDayOfMonth(int.Parse(dlThang.SelectedValue)).ToString("dd/MM/yyyy");
            hdTuNgay.Value = txtTuNgay.Text;
            hdDenNgay.Value = txtDenNgay.Text;
        }
    }
    public DateTime GetLastDayOfMonth(int iMonth)
    {
        DateTime dtResult = new DateTime(int.Parse(dlNam.SelectedValue), iMonth, 1);
        dtResult = dtResult.AddMonths(1);
        dtResult = dtResult.AddDays(-(dtResult.Day));
        return dtResult;
    }
    protected void btnPre_Click(object sender, EventArgs e)
    {
        if (CurrentPage > 1)
        {
            CurrentPage--;
            btnPre.Enabled = true;
            btnNext.Enabled = true;
            btnFirst.Enabled = true;

            p = new SqlParameter[2];
            p[0] = new SqlParameter("@PageNumber", CurrentPage);
            p[0].SqlDbType = SqlDbType.Int;
            p[1] = new SqlParameter("@RowspPage", PageNumber);
            p[1].SqlDbType = SqlDbType.Int;

            GV.DataSource = ex.GetData("sp_xdaphienchotdau_List", p);
            GV.DataBind();

            LoadFooterGV();

        }
        else
        {
            btnFirst.Enabled = false;
            btnPre.Enabled = false;
            btnNext.Enabled = true;
        }
    }
    protected void btnNext_Click(object sender, EventArgs e)
    {
        CurrentPage++;
        p = new SqlParameter[2];
        p[0] = new SqlParameter("@PageNumber", CurrentPage);
        p[0].SqlDbType = SqlDbType.Int;
        p[1] = new SqlParameter("@RowspPage", PageNumber);
        p[1].SqlDbType = SqlDbType.Int;

        GV.DataSource = ex.GetData("sp_xdaphienchotdau_List", p);
        GV.DataBind();

        LoadFooterGV();

        if (GV.Rows.Count.Equals(0))
        {
            btnPre.Enabled = true;
            btnNext.Enabled = false;
        }
        else
        {
            btnPre.Enabled = true;
            btnNext.Enabled = true;
        }
        btnFirst.Enabled = true;
    }
    protected void btnFirst_Click(object sender, EventArgs e)
    {
        CurrentPage = 1;
        p = new SqlParameter[2];
        p[0] = new SqlParameter("@PageNumber", CurrentPage);
        p[0].SqlDbType = SqlDbType.Int;
        p[1] = new SqlParameter("@RowspPage", PageNumber);
        p[1].SqlDbType = SqlDbType.Int;

        GV.DataSource = ex.GetData("sp_xdaphienchotdau_List", p);
        GV.DataBind();
        
        LoadFooterGV();
        
        btnPre.Enabled = false;
        btnNext.Enabled = true;
        btnFirst.Enabled = false;
    }
    void LoadFooterGV()
    {
        double ttiencovat = 0, ttienkhongvat = 0, sonhienlieu = 0;
        for (int i = 0; i < GV.Rows.Count; i++)
        {

            sonhienlieu += double.Parse(GV.Rows[i].Cells[4].Text.Replace(",", ""));
            ttiencovat += double.Parse(GV.Rows[i].Cells[10].Text.Replace(",", ""));
            ttienkhongvat += double.Parse(GV.Rows[i].Cells[11].Text.Replace(",", ""));
        }

        if (GV.Rows.Count > 0)
        {
            GV.FooterRow.Cells[2].Text = "Tổng số";
            GV.FooterRow.Cells[2].HorizontalAlign = HorizontalAlign.Center;
            //GV.FooterRow.Cells[4].HorizontalAlign = HorizontalAlign.Center;
            GV.FooterRow.Cells[4].Text = sonhienlieu > 999 ? string.Format("{0:0,0}", sonhienlieu) : sonhienlieu.ToString();
            GV.FooterRow.Cells[10].Text = ttiencovat > 999 ? string.Format("{0:0,0}", ttiencovat) : ttiencovat.ToString();
            GV.FooterRow.Cells[11].Text = ttienkhongvat > 999 ? string.Format("{0:0,0}", ttienkhongvat) : ttienkhongvat.ToString();

        }
    }
    protected void dlThang_SelectedIndexChanged(object sender, EventArgs e)
    {
        if (dlThang.SelectedIndex.Equals(0))
        {
            txtTuNgay.Visible = true;
            txtDenNgay.Visible = true;
            dlNam.Visible = false;
            txtTuNgay.Text = txtDenNgay.Text = DateTime.Now.ToString("dd/MM/yyyy");
        }
        else
        {
            txtTuNgay.Visible = false;
            txtDenNgay.Visible = false;
            dlNam.Visible = true;
        }

        getDate();
        p = new SqlParameter[2];
        p[0] = new SqlParameter("@TuNgay", ex.GetNgayThang(hdTuNgay.Value));
        p[0].SqlDbType = SqlDbType.SmallDateTime;
        p[1] = new SqlParameter("@DenNgay", ex.GetNgayThang(hdDenNgay.Value));
        p[1].SqlDbType = SqlDbType.SmallDateTime;

        dlLocBienSo.DataSource = ex.GetData("sp_xdaphienchotdau_ListBienSoByTime", p);
        dlLocBienSo.DataBind();
        dlLocBienSo.Items.Insert(0, new ListItem("--Chọn biển số xe--", ""));

        //
    }
}